﻿using System;
using System.Web.Mvc;
using System.Web.Routing;
using rosata.Areas.Admin.Controllers;
using rosata.Controllers;
using rosata.Providers.PromozioniProvider;
using rosata.Providers.Session;
using PromozioniController = rosata.Areas.Admin.Controllers.PromozioniAdminController;

namespace rosata
{
    public class RosataControllerFactory : DefaultControllerFactory
    {
        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            if (controllerType == null)
                return null;

            if (controllerType == typeof (Areas.Admin.Controllers.IndexController))
            {
                IndexController indexController = new Areas.Admin.Controllers.IndexController(new UserSessionValuesInHttpContext());
                return indexController;
            }

            if (controllerType == typeof (Areas.Admin.Controllers.PromozioniAdminController))
            {
                PromozioniAdminController promozioniController = new Areas.Admin.Controllers.PromozioniAdminController(new PromozioniProvider());
                return promozioniController;
            }

            if (controllerType == typeof(HomeController))
            {
                HomeController homeController = new HomeController(new PromozioniProvider());
                return homeController;
            }

            if (controllerType == typeof(rosata.Controllers.PromozioniController))
            {
                rosata.Controllers.PromozioniController promoController = new rosata.Controllers.PromozioniController(new PromozioniProvider());
                return promoController;
            }

            return base.GetControllerInstance(requestContext, controllerType);
        }
    }
}